﻿#include<iostream>
using namespace std;
//int main()
//{
//	cout << "hello world" << endl;
//	return 0;
//}
//故事的开始总是及其温柔
//int  a = 2;
//namespace N1 {
//	int a = 3;
//	namespace N2 {
//		int a = 4;
//	}
//}
//int main()
//{
//	int a = 1;
//	cout << a<<endl;//局部变量的a - 1 
//	cout << ::a<<endl;//全局变量的a - 2 
//	cout << N1::a << endl;//N1这个作用域的a - 3
//	cout << N1::N2::a<<endl;//N1作用域下N2作用域中的a - 4
//	return 0;
//}
//void fun(int a = 0)
//{
//	cout << a << endl;
//}
//int main() 
//{
//	fun();//使用函数默认值
//	fun(10);
//	return 0;
//}
//重载
//void add()
//{
//	cout << "调用无参函数" << endl;
//}
//int add(int a, int b)
//{
//	return a + b;
//}
//double add(double a, double b)
//{
//	return a + b;
//}
//int main()
//{
//	add();
//	add(1,2);
//	add(2.0, 2.0);
//	return 0;
//}
//引用
//int main()
//{
//	int a = 1;
//	int& b = a;
//	cout << "&b: " << &b << endl << "&a: " << &a << endl;
//	return 0;
//}
//int main()
//{
//	int a = 10;
//	// int& ra;   // 该条语句编译时会出错
//	int& b = a;
//	int& c = a;
//	int& d = c;
//	return 0;
//}
//int main()
//{
//	const int a = 10;
//	//int& ra = a;//错误的
//	const int& ra = a;
//	
//	//int& b = 20;
//	const int& rb = 20;
//
//	double c = 1.2;
//	//int& rc = c;
//	const int& rc = c;
//
//	return 0;
//}
//void reverse(int& a, int& b)
//{
//	int tem = a;
//	a = b;
//	b = tem;
//}
//int main()
//{
//	int a = 10;
//	int b = 2;
//	reverse(a, b);
//	cout << a << b << endl;
//	return 0;
//}
//int& Add(int a, int b)
//{
//	int c = a + b;
//	return c;
//}
//int main()
//{
//	int& ret = Add(1, 2);
//	Add(3, 4);
//	cout << "Add(1, 2) is :" << ret << endl;
//	cout << Add(3, 4) << endl;
//	return 0;
//}

//void func(double d, int i)
//{
//	cout << "void func(double d, int i)" << endl;
//}
//
//// 函数名修饰规则
//int main()
//{
//	func(1, 1.1);   // call  _Z4funcid(?)
//
//
//	func(1.1, 1);   // call  _Z4funcdi(?)
//
//	return 0;
//}
//int& Count()
//{
//	int n = 0;
//	n++;
//	
//	// ...
//	return n;
//}
//
//int main()
//{
//	rand();
//	int ret = Count();
//	
//	// 这里打印的结果可能是1，也可能是随机值
//	cout << ret << endl;
//	
//	cout << ret << endl;
//}
//void fun(double x, double y)
//{
//
//}
//int main()
//{
//	fun(1, 3);
//	int a = 0;
//	int* p = &a;
//	cout << &p;
//	return 0;
//}
int a[] = { 1,2,3,4,5 };
int& ind(int i)
{
	return a[i];
}
int main()
{
	ind(2) = 25;
	cout << ind(2) << endl;

	return 0;
}